<?php

/* *
 * 功能：支付宝服务器异步通知页面
 * 版本：3.3
 * 日期：2012-07-23
 * 说明：
 * 以下代码只是为了方便商户测试而提供的样例代码，商户可以根据自己网站的需要，按照技术文档编写,并非一定要使用该代码。
 * 该代码仅供学习和研究支付宝接口使用，只是提供一个参考。


 * ************************页面功能说明*************************
 * 创建该页面文件时，请留心该页面文件中无任何HTML代码及空格。
 * 该页面不能在本机电脑测试，请到服务器上做测试。请确保外部可以访问该页面。
 * 该页面调试工具请使用写文本函数logResult，该函数已被默认关闭，见alipay_notify_class.php中的函数verifyNotify
 * 如果没有收到该页面返回的 success 信息，支付宝会在24小时内按一定的时间策略重发通知
 */

require_once("alipay.config.php");
require_once("lib/alipay_notify.class.php");

//计算得出通知验证结果
$alipayNotify = new AlipayNotify($alipay_config);
$verify_result = $alipayNotify->verifyNotify();

//$conf = require_once ("../App/Conf/config.php");





if ($verify_result)
{//验证成功
    logResult("yanzhengchenggong");
    /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    //请在这里加上商户的业务逻辑程序代
    //——请根据您的业务逻辑来编写程序（以下代码仅作参考）——
    //获取支付宝的通知返回参数，可参考技术文档中服务器异步通知参数列表
    //商户订单号
    $out_trade_no = $_POST['out_trade_no'];

    //支付宝交易号

    $trade_no = $_POST['trade_no'];

    //交易状态
    $trade_status = $_POST['trade_status'];


    if ($_POST['trade_status'] == 'TRADE_FINISHED')
    {

        //判断该笔订单是否在商户网站中已经做过处理
        //如果没有做过处理，根据订单号（out_trade_no）在商户网站的订单系统中查到该笔订单的详细，并执行商户的业务程序
        //如果有做过处理，不执行商户的业务程序
        //注意：
        //该种交易状态只在两种情况下出现
        //1、开通了普通即时到账，买家付款成功后。
        //2、开通了高级即时到账，从该笔交易成功时间算起，过了签约时的可退款时限（如：三个月以内可退款、一年以内可退款等）后。
        //调试用，写文本函数记录程序运行情况是否正常
        //logResult("这里写入想要调试的代码变量值，或其他运行的结果记录");

        $con = mysql_connect("localhost", "root", "ins");


        if (!$con)
        {
            logResult("conn fail");
            echo ('Could not connect: ' . mysql_error());
        }

        mysql_select_db("marvel", $con);

        mysql_query("SET NAMES UTF8");

        $getstatus = mysql_query("select * from b2c_purchase_records where serialnumber='" . $out_trade_no . "'");

        $row = mysql_fetch_array($getstatus);

        if ($row['status'] != '1')
        {
            $update = mysql_query("update b2c_purchase_records set status=1 where serialnumber='" . $out_trade_no . "'");
            //logResult($update);
            mysql_close();
            //生成预约
//   		$ret = exec("../protected/yiic alipay notify --aliid={$_POST['trade_no']} --sn={$_POST['out_trade_no']}");

            /*
             * 生成预约
             */
            $aliid = $_POST['trade_no'];
            $sn = $_POST['out_trade_no'];
            $curl = curl_init(); //初始化curl模块 
            $curlPost = 'aliid=' . urlencode($aliid) . '&sn=' . urlencode($sn);
//            curl_setopt($curl, CURLOPT_URL, "http://app2.pocdoc.cn/index.php?r=app/user/ticketAdd"); //登录提交的地址
            curl_setopt($curl, CURLOPT_URL, "http://115.28.14.33:8000/index.php?r=app/user/ticketAdd"); //登录提交的地址
            //  curl_setopt($curl, CURLOPT_URL, "http://localhost/marvel_b2b/sources/trunk/web/index.php?r=app/user/ticketAdd/");//登录提交的地址
            curl_setopt($curl, CURLOPT_HEADER, 0); //是否显示头信息 
            //  curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);//是否自动显示返回的信息 
            curl_setopt($curl, CURLOPT_POST, 1); //post方式提交 
            curl_setopt($curl, CURLOPT_POSTFIELDS, $curlPost); //要提交的信息 
            $ret = curl_exec($curl); //执行cURL
            curl_close($curl); //关闭cURL资源，并且释放系统资源 
        }
    }
    else if ($_POST['trade_status'] == 'TRADE_SUCCESS')
    {

        //判断该笔订单是否在商户网站中已经做过处理
        //如果没有做过处理，根据订单号（out_trade_no）在商户网站的订单系统中查到该笔订单的详细，并执行商户的业务程序
        //如果有做过处理，不执行商户的业务程序
        //注意：
        //该种交易状态只在一种情况下出现——开通了高级即时到账，买家付款成功后。
        //调试用，写文本函数记录程序运行情况是否正常
        //logResult("这里写入想要调试的代码变量值，或其他运行的结果记录");
        $con = mysql_connect("localhost", "root", "ins");


        if (!$con)
        {
            logResult("conn fail");
            echo ('Could not connect: ' . mysql_error());
        }

        mysql_select_db("marvel", $con);

        mysql_query("SET NAMES UTF8");

        $getstatus = mysql_query("select * from b2c_purchase_records where serialnumber='" . $out_trade_no . "'");

        $row = mysql_fetch_array($getstatus);

        if ($row['status'] != '1')
        {
            $update = mysql_query("update b2c_purchase_records set status=1 where serialnumber='" . $out_trade_no . "'");
            //$rets = var_dump($update);
            //logResult($rets);
            mysql_close();

            //生成预约
//   		$ret = exec("../protected/yiic alipay notify --aliid={$_POST['trade_no']} --sn={$_POST['out_trade_no']}");

            /*
             * 生成预约
             */
            $aliid = $_POST['trade_no'];
            $sn = $_POST['out_trade_no'];
            $curl = curl_init(); //初始化curl模块 
            $curlPost = 'aliid=' . urlencode($aliid) . '&sn=' . urlencode($sn);
//            curl_setopt($curl, CURLOPT_URL, "http://app2.pocdoc.cn/index.php?r=app/user/ticketAdd"); //登录提交的地址
            curl_setopt($curl, CURLOPT_URL, "http://115.28.14.33:8000/index.php?r=app/user/ticketAdd"); //登录提交的地址
            //  curl_setopt($curl, CURLOPT_URL, "http://localhost/marvel_b2b/sources/trunk/web/index.php?r=app/user/ticketAdd/");//登录提交的地址
            curl_setopt($curl, CURLOPT_HEADER, 0); //是否显示头信息 
            //  curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);//是否自动显示返回的信息 
            curl_setopt($curl, CURLOPT_POST, 1); //post方式提交 
            curl_setopt($curl, CURLOPT_POSTFIELDS, $curlPost); //要提交的信息 
            $ret = curl_exec($curl); //执行cURL
            curl_close($curl); //关闭cURL资源，并且释放系统资源 
        }
    }

    //——请根据您的业务逻辑来编写程序（以上代码仅作参考）——

    echo "success";  //请不要修改或删除
    /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
}
else
{
    logResult("shibai");
    //验证失败
    echo "fail";


    //调试用，写文本函数记录程序运行情况是否正常
    //logResult("这里写入想要调试的代码变量值，或其他运行的结果记录");
}
?>